#include <SDL/SDL.h>
#include <iostream>
#include "sprite.h"
#include "tetrimino.h"

using namespace std;

Tetrimino::Tetrimino(int t, int dir) {
    for (int i = 0; i < 4; i++)
            for (int j = 0; j < 4; j++)
                for (int k = 0; k < 4; k++)
                    mDraw[i][j][k] = false;

    direcao = dir;
    p[0] = false; p[1] = false; p[2] = false; p[3] = false;
    x = 4;
    y = 0;
    tipo = t;
    count = 0;

    // XXXX -X--
    // ---- -X--
    // ---- -X--
    // ---- -X--
    if (tipo == 1) {
        mDraw[0][0][0] = true; mDraw[0][0][1] = true; mDraw[0][0][2] = true; mDraw[0][0][3] = true;
        mDraw[1][0][1] = true; mDraw[1][1][1] = true; mDraw[1][2][1] = true; mDraw[1][3][1] = true;
        mDraw[2][0][0] = true; mDraw[2][0][1] = true; mDraw[2][0][2] = true; mDraw[2][0][3] = true;
        mDraw[3][0][1] = true; mDraw[3][1][1] = true; mDraw[3][2][1] = true; mDraw[3][3][1] = true;
        img = Sprite::Get("cinza")->surface;
        if (dir == 0 || dir == 2) {
            y += 3;
        }
    }

    // XX--
    // XX--
    // ----
    // ----
    else if (tipo == 2) {
        mDraw[0][0][0] = true; mDraw[0][1][0] = true; mDraw[0][0][1] = true; mDraw[0][1][1] = true;
        mDraw[1][0][0] = true; mDraw[1][1][0] = true; mDraw[1][0][1] = true; mDraw[1][1][1] = true;
        mDraw[2][0][0] = true; mDraw[2][1][0] = true; mDraw[2][0][1] = true; mDraw[2][1][1] = true;
        mDraw[3][0][0] = true; mDraw[3][1][0] = true; mDraw[3][0][1] = true; mDraw[3][1][1] = true;
        img = Sprite::Get("amarelo")->surface;
        y += 2;
    }

    // -X-- -X-- ---- -X--
    // XXX- -XX- XXX- XX--
    // ---- -X-- -X-- -X--
    // ---- ---- ---- ----
    else if (tipo == 3) {
        mDraw[0][0][1] = true; mDraw[0][1][0] = true; mDraw[0][1][1] = true; mDraw[0][1][2] = true;
        mDraw[1][0][1] = true; mDraw[1][1][1] = true; mDraw[1][1][2] = true; mDraw[1][2][1] = true;
        mDraw[2][1][0] = true; mDraw[2][1][1] = true; mDraw[2][1][2] = true; mDraw[2][2][1] = true;
        mDraw[3][0][1] = true; mDraw[3][1][0] = true; mDraw[3][1][1] = true; mDraw[3][2][1] = true;
        img = Sprite::Get("roxo")->surface;
        if (dir == 0) { y += 2; }
        else { y += 1; }
    }

    // -XX- X---
    // XX-- XX--
    // ---- -X--
    // ---- ----
    else if (tipo == 4) {
        mDraw[0][0][1] = true; mDraw[0][0][2] = true; mDraw[0][1][0] = true; mDraw[0][1][1] = true;
        mDraw[1][0][0] = true; mDraw[1][1][0] = true; mDraw[1][1][1] = true; mDraw[1][2][1] = true;
        mDraw[2][0][1] = true; mDraw[2][0][2] = true; mDraw[2][1][0] = true; mDraw[2][1][1] = true;
        mDraw[3][0][0] = true; mDraw[3][1][0] = true; mDraw[3][1][1] = true; mDraw[3][2][1] = true;
        img = Sprite::Get("verde")->surface;
        if (dir == 0 || dir == 2) { y += 2; }
        else { y += 1; }
    }

    // XX-- -X--
    // -XX- XX--
    // ---- X---
    // ---- ----
    else if (tipo == 5) {
        mDraw[0][0][0] = true; mDraw[0][0][1] = true; mDraw[0][1][1] = true; mDraw[0][1][2] = true;
        mDraw[1][0][1] = true; mDraw[1][1][0] = true; mDraw[1][1][1] = true; mDraw[1][2][0] = true;
        mDraw[2][0][0] = true; mDraw[2][0][1] = true; mDraw[2][1][1] = true; mDraw[2][1][2] = true;
        mDraw[3][0][1] = true; mDraw[3][1][0] = true; mDraw[3][1][1] = true; mDraw[3][2][0] = true;
        img = Sprite::Get("vermelho")->surface;
        if (dir == 0 || dir == 2) { y += 2; }
        else { y += 1; }
    }

    // XXX- -X-- X--- XX--
    // --X- -X-- XXX- X---
    // ---- XX-- ---- X---
    // ---- ---- ---- ----
    else if (tipo == 6) {
        mDraw[0][0][0] = true; mDraw[0][0][1] = true; mDraw[0][0][2] = true; mDraw[0][1][2] = true;
        mDraw[1][0][1] = true; mDraw[1][1][1] = true; mDraw[1][2][1] = true; mDraw[1][2][0] = true;
        mDraw[2][0][0] = true; mDraw[2][1][0] = true; mDraw[2][1][1] = true; mDraw[2][1][2] = true;
        mDraw[3][0][0] = true; mDraw[3][0][1] = true; mDraw[3][1][0] = true; mDraw[3][2][0] = true;
        img = Sprite::Get("azul")->surface;
        if (dir == 0 || dir == 2) { y += 2; }
        else { y += 1; }
    }

    // XXX- XX-- --X- X---
    // X--- -X-- XXX- X---
    // ---- -X-- ---- XX--
    // ---- ---- ---- ----
    else if (tipo == 7) {
        mDraw[0][0][0] = true; mDraw[0][0][1] = true; mDraw[0][0][2] = true; mDraw[0][1][0] = true;
        mDraw[1][0][1] = true; mDraw[1][1][1] = true; mDraw[1][2][1] = true; mDraw[1][0][0] = true;
        mDraw[2][0][2] = true; mDraw[2][1][0] = true; mDraw[2][1][1] = true; mDraw[2][1][2] = true;
        mDraw[3][0][0] = true; mDraw[3][2][1] = true; mDraw[3][1][0] = true; mDraw[3][2][0] = true;
        img = Sprite::Get("laranja")->surface;
        if (dir == 0 || dir == 2) { y += 2; }
        else { y += 1; }
    }
}

Tetrimino::~Tetrimino() {
}
